home *** CD-ROM | disk | FTP | other *** search
- #define SMTPTRACE /* enable tracing for smtp */
- #define SMTP_PORT 25 /* well-known port for smtp */
- #define SMTPCLITIME 900 /* 15 minutes between client starts */
- #define MAXSESSIONS 10 /* most connections allowed */
- #define JOBNAME 13 /* max size of a job name with null */
- #define LINELEN 128
- #define SLINELEN 32
-
- extern char mailspool[];
- extern char mailqdir[]; /* Outgoing spool directory */
- extern char mailqueue[]; /* Prototype of work file */
- extern char maillock[]; /* Mail system lock */
- extern char baddir[]; /* Undeliverable jobs */
- extern char hostname[];
- extern int32 mailroute();
- extern int mlock(),rmlock();
-
- /* Recipient address entry */
- struct addr {
- struct addr *next;
- char *val;
- };
-
- /* Per-session control block used by smtp server */
- struct mail {
- struct tcb *tcb; /* TCP control block pointer */
- char state;
- #define COMMAND_STATE 0
- #define DATA_STATE 1
- char *system; /* Name of remote system */
- char *from; /* sender address */
- struct addr *to; /* Linked list of recipients */
- char buf[LINELEN]; /* Input buffer */
- char cnt; /* Length of input buffer */
- FILE *data; /* Temporary input file pointer */
- int32 seqn; /* message id */
- };
-
- /* used by smtpcli as a queue entry for a single message */
- struct smtp_job {
- struct smtp_job *next; /* pointer to next mail job for this system */
- char jobname[9]; /* the prefix of the job file name */
- char *from; /* address of sender */
- char *to; /* address recipient */
- };
-
- /* control structure used by an smtp client session */
- struct smtp_cb {
- struct tcb *tcb; /* tcp task control buffer */
- int32 ipaddr; /* address of forwarding system */
- char state; /* state machine placeholder */
- #define CLI_OPEN_STATE 0
- #define CLI_HELO_STATE 1
- #define CLI_MAIL_STATE 2
- #define CLI_RCPT_STATE 3
- #define CLI_DATA_STATE 4
- #define CLI_SEND_STATE 5
- #define CLI_UNLK_STATE 6
- #define CLI_QUIT_STATE 7
- #define CLI_IDLE 8
- char *wname; /* name of workfile */
- char *tname; /* name of data file */
- char buf[LINELEN]; /* Input buffer */
- char cnt; /* Length of input buffer */
- FILE *tfile;
- struct smtp_job *jobq;
- };
-
- #define NULLADDR (struct addr *)0
- #define NULLMAIL (struct mail *)0
- #define NULLCB (struct smtp_cb *)0
- #define NULLJOB (struct smtp_job *)0
-